{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Bridging Schema\n",
    "\n",
    "This notebook demonstrates the Bridging Schema design pattern\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Create dataset\n",
    "\n",
    "Let's create a dataset by simulating the scenario described in the book"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import pandas as pd\n",
    "import numpy as np\n",
    "import seaborn as sns\n",
    "sns.set(rc={'figure.figsize':(10, 10)})\n",
    "\n",
    "def set_payment_type(prob):\n",
    "    # 30% of transactions are cash\n",
    "    if prob < 0.3:\n",
    "        return 'Cash'\n",
    "\n",
    "    # stretch the remaining 0.3-1.0 to 0-1\n",
    "    prob = (prob-0.3)/0.7\n",
    "    if prob < 0.1:\n",
    "        return 'Gift'\n",
    "    if prob < 0.4:\n",
    "        return 'Debit'\n",
    "    return 'Credit'\n",
    "\n",
    "def create_dataset(N, is_old_format):\n",
    "    order_amount = 5 + np.abs(np.random.normal(scale=10, size=N)) # 5+, peaks at 15\n",
    "    order_distance = 1 + np.random.rand(N)*4  # 1-5\n",
    "    payment_type = np.random.rand(N)\n",
    "    \n",
    "    df = pd.DataFrame.from_dict({\n",
    "        'order_amount' : np.round(order_amount, 2),\n",
    "        'order_distance': np.round(order_distance, 1),\n",
    "        'payment_type': np.vectorize(set_payment_type)(payment_type),\n",
    "        'tip': np.zeros_like(order_amount)\n",
    "    })\n",
    "    \n",
    "    df.loc[df['payment_type'] == 'Cash', 'tip'] = 0.2\n",
    "    df.loc[df['payment_type'] == 'Gift', 'tip'] = 0.1\n",
    "    df.loc[df['payment_type'] == 'Debit',  'tip'] = 0.15\n",
    "    df.loc[df['payment_type'] == 'Credit', 'tip'] = 0.25\n",
    "    \n",
    "    df['tip'] = np.round(df['tip'] * df['order_amount'] + 0.5*df['order_distance'], 1)\n",
    "    \n",
    "    if is_old_format:\n",
    "        df.loc[df['payment_type'] != 'Cash', 'payment_type'] = 'Card'\n",
    "    \n",
    "    return df"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>order_amount</th>\n",
       "      <th>order_distance</th>\n",
       "      <th>payment_type</th>\n",
       "      <th>tip</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>19.01</td>\n",
       "      <td>3.4</td>\n",
       "      <td>Debit</td>\n",
       "      <td>4.6</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>9.09</td>\n",
       "      <td>1.8</td>\n",
       "      <td>Cash</td>\n",
       "      <td>2.7</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>11.85</td>\n",
       "      <td>1.1</td>\n",
       "      <td>Credit</td>\n",
       "      <td>3.5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>17.03</td>\n",
       "      <td>3.0</td>\n",
       "      <td>Credit</td>\n",
       "      <td>5.8</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>17.87</td>\n",
       "      <td>3.2</td>\n",
       "      <td>Gift</td>\n",
       "      <td>3.4</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   order_amount  order_distance payment_type  tip\n",
       "0         19.01             3.4        Debit  4.6\n",
       "1          9.09             1.8         Cash  2.7\n",
       "2         11.85             1.1       Credit  3.5\n",
       "3         17.03             3.0       Credit  5.8\n",
       "4         17.87             3.2         Gift  3.4"
      ]
     },
     "execution_count": 2,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df = create_dataset(5, False)\n",
    "df"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>order_amount</th>\n",
       "      <th>order_distance</th>\n",
       "      <th>payment_type</th>\n",
       "      <th>tip</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>17.38</td>\n",
       "      <td>3.7</td>\n",
       "      <td>Cash</td>\n",
       "      <td>5.3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>28.28</td>\n",
       "      <td>3.0</td>\n",
       "      <td>Card</td>\n",
       "      <td>5.7</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>22.40</td>\n",
       "      <td>3.8</td>\n",
       "      <td>Card</td>\n",
       "      <td>7.5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>18.58</td>\n",
       "      <td>1.6</td>\n",
       "      <td>Card</td>\n",
       "      <td>5.4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>7.65</td>\n",
       "      <td>4.1</td>\n",
       "      <td>Cash</td>\n",
       "      <td>3.6</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   order_amount  order_distance payment_type  tip\n",
       "0         17.38             3.7         Cash  5.3\n",
       "1         28.28             3.0         Card  5.7\n",
       "2         22.40             3.8         Card  7.5\n",
       "3         18.58             1.6         Card  5.4\n",
       "4          7.65             4.1         Cash  3.6"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df = create_dataset(5, True)\n",
    "df"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Bridging\n",
    "\n",
    "Create dataset of 5000 new transactions and 1 million old transactions"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [],
   "source": [
    "df_new = create_dataset(5000, False)\n",
    "df_old = create_dataset(1000*1000, True)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### How many samples do we need to evaluate properly?\n",
    "\n",
    "Train a model on the old dataset and evaluate it on different subsets"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [],
   "source": [
    "N_train = (int) (len(df_old) * 0.5)\n",
    "N_eval = len(df_old) - N_train"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "LinearRegression(copy_X=True, fit_intercept=True, n_jobs=None, normalize=False)"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from sklearn.linear_model import LinearRegression\n",
    "from sklearn.preprocessing import OneHotEncoder\n",
    "\n",
    "model = LinearRegression()\n",
    "enc = OneHotEncoder(handle_unknown='ignore')\n",
    "df_train = enc.fit_transform( df_old.loc[:N_train, df.columns != 'tip'] )\n",
    "model.fit(df_train, df_old.loc[:N_train, 'tip'])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.7907516966527095"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df_eval = enc.transform( df_old.loc[N_train:, df.columns != 'tip'] )\n",
    "model.score(df_eval, df_old.loc[N_train:, 'tip'])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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S3eNNWvWICkpCaGhocjLy9M/3tWYmHqMTFNdXY1f/vKXmD59OubMmYOUlBRUVVUB4DhZmqeeegpz587F/PnzkZycjLNnzwLgOFmiDz74oMPvPY6RZUlKSsKMGTMwb948zJs3D2lpaQD6YZzEAWrRokXili1bRFEUxS1btoiLFi3q5zu6e2RmZoolJSXipEmTxPPnz+sf72pMTD1GpqmurhaPHj2q//rNN98U//CHP4iiyHGyNLW1tfr/37t3rzh//nxRFDlOliYnJ0dcvny5OHHiRP3vPY6RZbn5M6mNucdpQAZeSqVSjImJEVUqlSiKoqhSqcSYmBixsrKyn+/s7tL+H3lXY2LqMeo933//vbhkyRKOk4XbvHmzeP/993OcLExzc7O4YMECsaioSP97j2NkeToLvPpjnGS9l8SzHKWlpfDy8oJUKgUASKVSeHp6orS0FK6urv18d3enrsZEFEWTjnEse4dGo8GXX36JpKQkjpOFeumll3Do0CGIooh169ZxnCzMu+++i7lz5yIgIED/GMfIMv3ud7+DKIqIiYnBb37zm34ZpwFb40VEhnnjjTdga2uLxx57rL9vhW5j9erV+PHHH7Fy5Uq89dZb/X071E5WVhays7ORnJzc37dC3fjiiy+wbds2fPPNNxBFEa+//nq/3MeADLx8fHxQXl4OtVoNAFCr1aioqICPj08/39ndq6sxMfUY9dyaNWtQWFiId955BxKJhONk4ebPn4/09HR4e3tznCxEZmYmCgoKMHnyZCQlJaGsrAzLly9HUVERx8jCtL2HCoUCycnJOHHiRL/8zhuQgZebmxvCw8OxY8cOAMCOHTsQHh7ONG0/6mpMTD1GPfP2228jJycHH374IRQKBQCOk6VpaGhAaWmp/uv9+/fDycmJ42RBVqxYgYMHD2L//v3Yv38/vL298cknn2DWrFkcIwty48YN1NXVAQBEUcTOnTsRHh7eLz9LgiiKYh99n/0qPz8fv//971FbWwtHR0esWbMGQ4YM6e/buiusWrUKe/bsgVKphIuLC5ydnfHdd991OSamHiPTXLhwAffddx8CAwNhbW0NAPD398eHH37IcbIgSqUSTz31FBobGyGRSODk5IQXX3wRERERHCcLlZSUhI8//hghISEcIwty5coVPPPMM1Cr1dBoNAgODsbLL78MT09Ps4/TgA28iIiIiCzNgJxqJCIiIrJEDLyIiIiIzISBFxEREZGZMPAiIiIiMhMGXkRERERmwsCLiIiIyEwYeBHRXSEpKQmHDx826bklJSWIiorSd6kmIjLVgNwkm4ioN/n6+iIrK6u/b4OIBgBmvIiIiIjMhIEXEVmc8vJyPPPMM0hISEBSUhI+/fRTlJeXY9SoUbh+/br+vNzcXMTHx6O1tRVFRUVYvHgx4uPjER8fj9/+9reora016rqnT5/GAw88gOjoaIwdOxZ//etfAQBXr15FaGgoVCoVsrKyEBUVpf9v5MiRSEpKAgBoNBqsXbsWU6ZMQXx8PJ577rkO90tExMCLiCyKRqPBr3/9a4SGhiI1NRXr16/H+vXrkZeXh8jISOzZs0d/7vbt2zF9+nTI5XKIoognn3wSaWlp2LVrF8rKyvD+++8bde3Vq1dj8eLFOHHiBPbu3YuZM2feck5UVBSysrKQlZWFjIwMREZGYvbs2QCATz/9FPv27cPnn3+OtLQ0ODk54fXXX+/ZG0JEAwoDLyKyKNnZ2aiqqkJKSgoUCgUCAgKwYMEC7Ny5E3PmzMGOHTsAAKIo6h8DgMGDByMxMREKhQKurq54/PHHkZmZadS1ZTIZioqKUFVVBTs7O0RGRnZ5/qpVq2BjY4OVK1cCAL766iusXLkS3t7eUCgUSElJwe7du6FSqUx4J4hoIGJxPRFZlOLiYlRUVCA2Nlb/mFqtRmxsLKZPn4433ngD5eXlKCwshCAI+vMqKyuxatUqHDt2DA0NDRBFEY6OjkZde/Xq1Xjvvfcwc+ZM+Pv7IyUlBZMmTer03I0bNyIjIwObNm2CRKL9G7akpARPP/20/msAkEgkqKyshJeXl7FvBRENQAy8iMii+Pj4wN/fv8OUYnuJiYnYtWsXCgoKMHv2bAiCAAD4xz/+AUEQsG3bNri4uGDfvn1GT/MFBgbin//8JzQaDfbs2YNnn30W6enpt5x37NgxvPvuu9iwYQMcHBz0j3t7e+Mvf/kLYmJijLouEd09ONVIRBZl1KhRsLe3x9q1a9HU1AS1Wo28vDycPn0aADBnzhxs3boVu3fv1k8zAkBDQwNsbW3h6OiI8vJyrFu3zuhrb926FVVVVZBIJPpsmVQq7XBOaWkpnn/+eaxZswZBQUEdjj3yyCN45513UFxcDACoqqrCvn37jL4PIhq4GHgRkUWRSqX46KOPcO7cOUyePBkJCQl4+eWXUV9fD0DbCPXy5ctwd3dHWFiY/nkpKSnIzc1FbGwsVqxYgWnTphl97bS0NMyePRtRUVFYvXo13n77bVhZWXU458iRI1AqlXjuuef0KxvbiusXL16MpKQkLFu2DFFRUViwYIE+YCQiAgBBFEWxv2+CiIiI6G7AjBcRERGRmbC4nojuKk888QSOHz9+y+NPPvkkfvWrX/XDHRHR3YRTjURERERmwqlGIiIiIjNh4EVERERkJgy8iIiIiMyEgRcRERGRmTDwIiIiIjKT/we8uB9b5fQVqAAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<Figure size 720x720 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "sizes = []\n",
    "score_mean = []\n",
    "score_stddev = []\n",
    "for subset_size in range(100, 5000, 100): # 5000 here because that is the number of new examples we have\n",
    "    sizes.append(subset_size)\n",
    "    # compute variability of the eval metric at this subset size\n",
    "    scores = []\n",
    "    for x in range(1, 25):\n",
    "        indices = np.random.choice(N_eval, size=subset_size, replace=False)\n",
    "        scores.append(\n",
    "            model.score(df_eval[indices], df_old.loc[N_train+indices, 'tip'])\n",
    "        )\n",
    "    score_mean.append(np.mean(scores))\n",
    "    score_stddev.append(np.std(scores))\n",
    "scores = pd.DataFrame.from_dict({\n",
    "    'eval_size': sizes,\n",
    "    'score': score_mean,\n",
    "    'stddev': score_stddev\n",
    "})\n",
    "scores.plot(x='eval_size', y='stddev', linewidth=2);"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Looking at this, it is clear that (on this problem) 3500 eval samples would be ideal, but 2000 is tolerable.\n",
    "\n",
    "So, let's keep 2000 new examples aside for evaluation.\n",
    "\n",
    "Take 3000 new examples for training"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {},
   "outputs": [],
   "source": [
    "N_NEW = 2000"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Bridging schema using static approach\n",
    "\n",
    "Estimate the probability of the different card types from the new data to find how to encode the "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>order_amount</th>\n",
       "      <th>order_distance</th>\n",
       "      <th>tip</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>payment_type</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>Cash</th>\n",
       "      <td>936</td>\n",
       "      <td>936</td>\n",
       "      <td>936</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Credit</th>\n",
       "      <td>1280</td>\n",
       "      <td>1280</td>\n",
       "      <td>1280</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Debit</th>\n",
       "      <td>602</td>\n",
       "      <td>602</td>\n",
       "      <td>602</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Gift</th>\n",
       "      <td>182</td>\n",
       "      <td>182</td>\n",
       "      <td>182</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "              order_amount  order_distance   tip\n",
       "payment_type                                    \n",
       "Cash                   936             936   936\n",
       "Credit                1280            1280  1280\n",
       "Debit                  602             602   602\n",
       "Gift                   182             182   182"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df_train_new = df_new.loc[N_NEW:, :]\n",
    "counts = df_train_new.groupby('payment_type').count()\n",
    "counts"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[0, 0.08817829457364341, 0.2916666666666667, 0.6201550387596899]\n"
     ]
    }
   ],
   "source": [
    "num_credit = counts.loc['Credit', 'tip']\n",
    "num_debit = counts.loc['Debit', 'tip']\n",
    "num_gift = counts.loc['Gift', 'tip']\n",
    "num_total = num_gift + num_debit + num_credit\n",
    "imputed_value = [\n",
    "    0,\n",
    "    num_gift / num_total,\n",
    "    num_debit / num_total,\n",
    "    num_credit / num_total\n",
    "]\n",
    "print(imputed_value)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>order_amount</th>\n",
       "      <th>order_distance</th>\n",
       "      <th>tip</th>\n",
       "      <th>encoded_cash</th>\n",
       "      <th>encoded_gift</th>\n",
       "      <th>encoded_debit</th>\n",
       "      <th>encoded_credit</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>7.28</td>\n",
       "      <td>3.8</td>\n",
       "      <td>3.4</td>\n",
       "      <td>1</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>11.34</td>\n",
       "      <td>2.1</td>\n",
       "      <td>3.3</td>\n",
       "      <td>1</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>16.20</td>\n",
       "      <td>2.0</td>\n",
       "      <td>5.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0.088178</td>\n",
       "      <td>0.291667</td>\n",
       "      <td>0.620155</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>17.87</td>\n",
       "      <td>1.3</td>\n",
       "      <td>3.3</td>\n",
       "      <td>0</td>\n",
       "      <td>0.088178</td>\n",
       "      <td>0.291667</td>\n",
       "      <td>0.620155</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>12.61</td>\n",
       "      <td>2.0</td>\n",
       "      <td>2.9</td>\n",
       "      <td>0</td>\n",
       "      <td>0.088178</td>\n",
       "      <td>0.291667</td>\n",
       "      <td>0.620155</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>9.42</td>\n",
       "      <td>1.7</td>\n",
       "      <td>2.7</td>\n",
       "      <td>1</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>15.52</td>\n",
       "      <td>4.4</td>\n",
       "      <td>5.3</td>\n",
       "      <td>1</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>5.45</td>\n",
       "      <td>3.4</td>\n",
       "      <td>2.5</td>\n",
       "      <td>0</td>\n",
       "      <td>0.088178</td>\n",
       "      <td>0.291667</td>\n",
       "      <td>0.620155</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>16.47</td>\n",
       "      <td>3.9</td>\n",
       "      <td>4.4</td>\n",
       "      <td>0</td>\n",
       "      <td>0.088178</td>\n",
       "      <td>0.291667</td>\n",
       "      <td>0.620155</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>16.15</td>\n",
       "      <td>4.5</td>\n",
       "      <td>4.7</td>\n",
       "      <td>0</td>\n",
       "      <td>0.088178</td>\n",
       "      <td>0.291667</td>\n",
       "      <td>0.620155</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   order_amount  order_distance  tip  encoded_cash  encoded_gift  \\\n",
       "0          7.28             3.8  3.4             1      0.000000   \n",
       "1         11.34             2.1  3.3             1      0.000000   \n",
       "2         16.20             2.0  5.0             0      0.088178   \n",
       "3         17.87             1.3  3.3             0      0.088178   \n",
       "4         12.61             2.0  2.9             0      0.088178   \n",
       "5          9.42             1.7  2.7             1      0.000000   \n",
       "6         15.52             4.4  5.3             1      0.000000   \n",
       "7          5.45             3.4  2.5             0      0.088178   \n",
       "8         16.47             3.9  4.4             0      0.088178   \n",
       "9         16.15             4.5  4.7             0      0.088178   \n",
       "\n",
       "   encoded_debit  encoded_credit  \n",
       "0       0.000000        0.000000  \n",
       "1       0.000000        0.000000  \n",
       "2       0.291667        0.620155  \n",
       "3       0.291667        0.620155  \n",
       "4       0.291667        0.620155  \n",
       "5       0.000000        0.000000  \n",
       "6       0.000000        0.000000  \n",
       "7       0.291667        0.620155  \n",
       "8       0.291667        0.620155  \n",
       "9       0.291667        0.620155  "
      ]
     },
     "execution_count": 21,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "bridged_old = df_old.copy()\n",
    "bridged_old['encoded_cash'] = 1  # default to cash\n",
    "bridged_old['encoded_gift'] = 0  # default to cash\n",
    "bridged_old['encoded_debit'] = 0  # default to cash\n",
    "bridged_old['encoded_credit'] = 0  # default to cash\n",
    "bridged_old.loc[bridged_old['payment_type'] == 'Card', 'encoded_cash'] = imputed_value[0]\n",
    "bridged_old.loc[bridged_old['payment_type'] == 'Card', 'encoded_gift'] = imputed_value[1]\n",
    "bridged_old.loc[bridged_old['payment_type'] == 'Card', 'encoded_debit'] = imputed_value[2]\n",
    "bridged_old.loc[bridged_old['payment_type'] == 'Card', 'encoded_credit'] = imputed_value[3]\n",
    "bridged_old.drop(columns='payment_type', inplace=True)\n",
    "bridged_old[:10]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Prepare new data\n",
    "\n",
    "Because we explicitly encoded the fields for the bridged data, let's make sure to repeat this for the new data also."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>order_amount</th>\n",
       "      <th>order_distance</th>\n",
       "      <th>tip</th>\n",
       "      <th>encoded_cash</th>\n",
       "      <th>encoded_gift</th>\n",
       "      <th>encoded_debit</th>\n",
       "      <th>encoded_credit</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>11.11</td>\n",
       "      <td>4.0</td>\n",
       "      <td>4.8</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>7.95</td>\n",
       "      <td>2.1</td>\n",
       "      <td>1.8</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>6.90</td>\n",
       "      <td>1.6</td>\n",
       "      <td>2.2</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>11.38</td>\n",
       "      <td>3.5</td>\n",
       "      <td>3.5</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>19.20</td>\n",
       "      <td>5.0</td>\n",
       "      <td>6.3</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   order_amount  order_distance  tip  encoded_cash  encoded_gift  \\\n",
       "0         11.11             4.0  4.8             0             0   \n",
       "1          7.95             2.1  1.8             0             1   \n",
       "2          6.90             1.6  2.2             1             0   \n",
       "3         11.38             3.5  3.5             0             0   \n",
       "4         19.20             5.0  6.3             1             0   \n",
       "\n",
       "   encoded_debit  encoded_credit  \n",
       "0              0               1  \n",
       "1              0               0  \n",
       "2              0               0  \n",
       "3              1               0  \n",
       "4              0               0  "
      ]
     },
     "execution_count": 22,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "encoded_new = df_new.copy()\n",
    "encoded_new['encoded_cash'] = 0  # default to zero\n",
    "encoded_new['encoded_gift'] = 0  # default to zero\n",
    "encoded_new['encoded_debit'] = 0  # default to zero\n",
    "encoded_new['encoded_credit'] = 0  # default to zero\n",
    "encoded_new.loc[encoded_new['payment_type'] == 'Cash', 'encoded_cash'] = 1 # one-hot encode\n",
    "encoded_new.loc[encoded_new['payment_type'] == 'Gift', 'encoded_gift'] = 1 # one-hot encode\n",
    "encoded_new.loc[encoded_new['payment_type'] == 'Debit', 'encoded_debit'] = 1 # one-hot encode\n",
    "encoded_new.loc[encoded_new['payment_type'] == 'Credit', 'encoded_credit'] = 1 # one-hot encode\n",
    "encoded_new.drop(columns='payment_type', inplace=True)\n",
    "encoded_new[:5]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "encoded_new_eval = encoded_new.loc[:N_NEW, :]\n",
    "evalX = encoded_new_eval.loc[:, encoded_new_eval.columns != 'tip']\n",
    "evalY = encoded_new_eval.loc[:, 'tip']\n",
    "encoded_new_train = encoded_new.loc[N_NEW:, :]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Augmented training dataset\n",
    "\n",
    "Start with the 3000 new training examples, then add in bridged examples\n",
    "from the old data as long as performance improves. This is a hyperparameter tuning operation.\n",
    "Here's we'll simply do grid-search."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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B5CgTQghhBDCA0jQJoQQQgjhASRoE0IIIYTwABK0CSGEEEJ4AAnahBBCCCE8gARtQgghhBAeQII2IYQQQggPIEGbEEIIIYQHkKBtBPLz89m0aRNr165l06ZNFBQUuPqSxo36+nq+973vsXbtWjIzM/nhD39IXV0dMPD7PhqPib4999xzTJs2jZycHEDuizvo7OzkscceY82aNWRmZvLTn/4UkHvjDvbv389tt93Ghg0byMzMZN++fYDcm7H29NNPs2LFih7/d8HY34dh3yNVDNvmzZvVHTt2qKqqqjt27FA3b97s4isaP+rr69VDhw5pf//lL3+pbt26VVXVgd/30XhM9HbmzBn1vvvuU5cvX66eP39eVVW5L+7gySefVJ966inVZrOpqqqq1dXVqqrKvXE1m82mLliwQPtZyc7OVufNm6darVa5N2Ps6NGjallZmXrTTTdp90NVx/5nZLj3SIK2YaqpqVHT09NVi8WiqqqqWiwWNT09Xa2trXXxlY1P77//vrply5YB3/fReEz01tnZqd55551qUVGR9h+f3BfXa2lpUdPT09WWlpYe/y73xvVsNpt67bXXqseOHVNVVVWPHDmirlmzRu6NC10etI31fRjJPTIML8EoysvLiYqKQq/XA6DX64mMjKS8vJzQ0FAXX934YrPZePPNN1mxYsWA77uqqk5/TO5lb7/97W+59dZbSUhI0P5N7ovrFRcXExwczHPPPcfhw4fx8/PjX/7lX/D29pZ742KKovCb3/yGBx98EF9fX1pbW3nxxRfl58ZNjPV9GMk9kj1twu09+eST+Pr68p3vfMfVlzLhHT9+nNOnT3PXXXe5+lLEFSwWC8XFxcyYMYO3336bn/zkJ/zoRz+ira3N1Zc24VksFl588UVeeOEF9u/fz//93//xr//6r3JvxJBJpm2YYmJiqKysxGq1otfrsVqtVFVVERMT4+pLG1eefvppCgsL2bZtGzqdbsD3XVVVpz8mejp69Ch5eXmsXLkSgIqKCu677z62bt0q98XFYmNjMRgMZGRkADB37lxCQkLw9vaWe+Ni2dnZVFVVkZ6eDkB6ejo+Pj6YTCa5N25grD9XRnKPJNM2TGFhYaSlpbFr1y4Adu3aRVpamqSfneiZZ57hzJkzPP/88xiNRmDg9300HhM9ff/73+fAgQN8/PHHfPzxx0RHR/PKK6+w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\n",
      "text/plain": [
       "<Figure size 720x720 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# add N bridged examples from old and train.\n",
    "bridged_examples = []\n",
    "scores = []\n",
    "for num_bridged in range(0, 1000*100, 1000):\n",
    "    bridged_examples.append(num_bridged)\n",
    "    df_train = pd.concat([encoded_new_train, bridged_old[:num_bridged]], ignore_index=True)\n",
    "    X = df_train.loc[:, df_train.columns != 'tip']\n",
    "    Y = df_train.loc[:, 'tip']\n",
    "    model.fit(X, Y)\n",
    "    scores.append(model.score(evalX, evalY))\n",
    "\n",
    "scores = pd.DataFrame.from_dict({\n",
    "    'number_bridged': bridged_examples,\n",
    "    'eval_metric': scores\n",
    "})\n",
    "scores.plot(x='number_bridged', y='eval_metric', linewidth=2);"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Looks like we should aim for bridging the new dataset by adding 60,000 old examples."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Copyright 2020 Google Inc. Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License"
   ]
  }
 ],
 "metadata": {
  "environment": {
   "name": "tf2-gpu.2-1.m46",
   "type": "gcloud",
   "uri": "gcr.io/deeplearning-platform-release/tf2-gpu.2-1:m46"
  },
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.6"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
